Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

upgrade(tracer): Support libdatadog's library_config module #5126

Merged
merged 19 commits into from
Mar 3, 2025

Conversation

BaptisteFoy
Copy link
Contributor

@BaptisteFoy BaptisteFoy commented Jan 17, 2025

What does this PR do?

Supports libdatadog's library_config module to configure the tracing libraries from a file on disk that may remotely managed.

We don't load the WASM module if the files don't exist on disk.

Motivation

Being able to configure tracing libraries from a file / the UI

Additional Notes

Copy link

github-actions bot commented Jan 17, 2025

Overall package size

Self size: 8.82 MB
Deduped: 95.42 MB
No deduping: 95.93 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.5.0 | 29.83 MB | 29.83 MB | | @datadog/native-appsec | 8.4.0 | 19.25 MB | 19.26 MB | | @datadog/native-iast-taint-tracking | 3.3.0 | 13.77 MB | 13.78 MB | | @datadog/pprof | 5.5.1 | 9.79 MB | 10.17 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.8.0 | 2.6 MB | 2.74 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.1.0 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 835.4 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.2 | 53.63 kB | 53.63 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@pr-commenter
Copy link

pr-commenter bot commented Jan 17, 2025

Benchmarks

Benchmark execution time: 2025-02-28 15:08:25

Comparing candidate commit e30985d in PR branch baptiste.foy/FA/library-config-libdatadog with baseline commit 444ad14 in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 916 metrics, 17 unstable metrics.

@BaptisteFoy BaptisteFoy force-pushed the baptiste.foy/FA/library-config-libdatadog branch from 852b817 to 83d4172 Compare January 17, 2025 15:35
Copy link

codecov bot commented Jan 17, 2025

Codecov Report

Attention: Patch coverage is 90.10989% with 9 lines in your changes missing coverage. Please review.

Project coverage is 80.67%. Comparing base (444ad14) to head (e30985d).
Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
packages/dd-trace/src/config_stable.js 85.71% 8 Missing ⚠️
packages/dd-trace/src/config.js 96.77% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5126      +/-   ##
==========================================
+ Coverage   80.64%   80.67%   +0.02%     
==========================================
  Files         489      490       +1     
  Lines       21756    21836      +80     
==========================================
+ Hits        17546    17617      +71     
- Misses       4210     4219       +9     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@BaptisteFoy BaptisteFoy force-pushed the baptiste.foy/FA/library-config-libdatadog branch 2 times, most recently from 369cde4 to d85addc Compare February 11, 2025 09:40
@BaptisteFoy BaptisteFoy force-pushed the baptiste.foy/FA/library-config-libdatadog branch 2 times, most recently from d4e0a29 to f111eac Compare February 11, 2025 12:22
@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Feb 11, 2025

Datadog Report

Branch report: baptiste.foy/FA/library-config-libdatadog
Commit report: fc24b86
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 664 Passed, 0 Skipped, 10m 31.98s Total Time

@BaptisteFoy BaptisteFoy force-pushed the baptiste.foy/FA/library-config-libdatadog branch 4 times, most recently from 44e6e6f to 58d3ea2 Compare February 11, 2025 14:42
Copy link
Contributor

@szegedi szegedi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly looks good, made some suggestions.

When @datadog/libdatadog gets released, add package.json and yarn.lock updates to this PR – I know you mentioned in the PR description that it needs to be done; I'm just emphasizing that it should be done as part of this PR.

@BaptisteFoy BaptisteFoy force-pushed the baptiste.foy/FA/library-config-libdatadog branch 6 times, most recently from 923400e to 3361fe4 Compare February 20, 2025 10:33
@BaptisteFoy BaptisteFoy force-pushed the baptiste.foy/FA/library-config-libdatadog branch 3 times, most recently from 34870a4 to a9071bf Compare February 20, 2025 12:38
@BaptisteFoy BaptisteFoy force-pushed the baptiste.foy/FA/library-config-libdatadog branch 2 times, most recently from baaddfe to 0b411d6 Compare February 20, 2025 13:07
Copy link
Contributor

@szegedi szegedi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're getting there – looks mostly good, one more nit.

szegedi
szegedi previously approved these changes Feb 25, 2025
@BaptisteFoy BaptisteFoy force-pushed the baptiste.foy/FA/library-config-libdatadog branch from 90b5ec4 to 5beaa76 Compare February 26, 2025 15:39
szegedi
szegedi previously approved these changes Feb 26, 2025
: isFalse(profilingEnabledEnv)
? 'false'
: profilingEnabledEnv === 'auto' ? 'auto' : undefined
const profilingEnabled = normalizeProfilingEnabledValue(profilingEnabledEnv)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

profilingEnabledEnv is only used by profilingEnabled, should it be moved to the helper too? This would allow the helper to be used anywhere without having to know about the environment variables each time.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can simplify the code a bit and remove profilingEnabledEnv as an intermediate variable. Though the input of normalizeProfilingEnabledValue isn't the same in the two places it's used (it's not an environment variable in stableConfig) so we can't do what you suggest.

this.wasm_loaded = false

if (isInServerlessEnvironment()) {
// Bail out early if we're in a serverless environment, stable config isn't supported
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be done before this file is ever loaded.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried something in don't load config_stable.js on serverless; please tell me if this what you expect.

I'm semi-convinced by my approach because it forces us to check whether or not the stableConfig object is defined at every call.

szegedi
szegedi previously approved these changes Feb 27, 2025
rochdev
rochdev previously approved these changes Feb 28, 2025
Copy link
Collaborator

@khanayan123 khanayan123 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No concerns on my end

@szegedi szegedi merged commit dcc7f48 into master Mar 3, 2025
396 checks passed
@szegedi szegedi deleted the baptiste.foy/FA/library-config-libdatadog branch March 3, 2025 12:45
sabrenner pushed a commit that referenced this pull request Mar 4, 2025
@sabrenner sabrenner mentioned this pull request Mar 4, 2025
sabrenner pushed a commit that referenced this pull request Mar 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants